// 创建属性键
schema.propertyKey("cardNumber").asText().ifNotExist().create();      // 卡号
schema.propertyKey("holderName").asText().ifNotExist().create();      // 持卡人姓名
schema.propertyKey("amount").asDouble().ifNotExist().create();        // 交易金额
schema.propertyKey("transTime").asDate().ifNotExist().create();       // 交易时间
schema.propertyKey("ukey").asText().ifNotExist().create();            // 交易唯一标识

// 创建顶点标签 - 卡
schema.vertexLabel("card")
      .properties("cardNumber", "holderName")
      .primaryKeys("cardNumber")
      .ifNotExist()
      .create();

// 创建边标签 - 交易关系
schema.edgeLabel("transaction")
      .sourceLabel("card")
      .targetLabel("card")
      .properties("amount", "transTime", "ukey")
      .nullableKeys("amount", "transTime")
      .multiTimes()
      .sortKeys("ukey")
      .ifNotExist()
      .create();

// 创建索引
schema.indexLabel("cardByHolder")
      .onV("card")
      .by("holderName")
      .secondary()
      .ifNotExist()
      .create();

schema.indexLabel("transactionByUkey")
      .onE("transaction")
      .by("ukey")
      .unique()
      .ifNotExist()
      .create();

schema.indexLabel("transactionByTime")
      .onE("transaction")
      .by("transTime")
      .range()
      .ifNotExist()
      .create();

schema.indexLabel("transactionByAmount")
      .onE("transaction")
      .by("amount")
      .range()
      .ifNotExist()
      .create(); 